Large capacity packet switches and routers are generally of the input output buffered type, where input and output port modules are interconnected via a large switch fabric. To scale the switch fabric to large number of ports (greater than 100), with each port operating at speeds of several Giga bits/sec each, the most scalable switch fabric is a cross bar switch fabric. The input and output port modules are themselves large shared memory switches. The cross bar switch fabric has N input and N output ports. Each input port is attached to an input port module that buffers traffic in large shared memory buffers. Similarly each output port is attached to an output port module that buffers traffic. The input and output port modules may have a single high speed port or multiple lower speed subports.
To achieve high efficiency and support QoS, variable length packets are segmented into fixed length packets or cells in the input port modules, and are switched to the output port modules via the cross bar switch. At the output port module, the cells are reassembled into their respective packets.
To increase the switching capacity, multiple cross bar switches (or switch slices) may be connected in parallel. In this case, the cells from the input module are distributed across the multiple switch fabric slices in a load-sharing manner. Associated with each switch fabric slice is a central cross bar scheduler. In the case of multiple parallel switch fabric slices, all the cross bar schedulers work independently.
In general, in a large switching complex, quality of service (QoS) management is typically the responsibility of the traffic managers and/or network processors, and it is sufficient if the switch fabric resolves contention based on static priorities. This is indeed true if there are no bottlenecks in the switch, or the probability of contention is very small.
However, in a large switch, with asymmetric or hotspot loading, and many input ports/streams contending for the same resources, there can be multiple bottlenecks. Simple mechanisms such as static priority scheduling will not guarantee QoS for all classes of traffic because performance of lower priority classes is sacrificed in favor of higher priority traffic classes, leading to significant degradation of QoS for lower priority traffic classes.
A common practice is to classify traffic into one of M traffic classes and use class-based scheduling at input and output port modules. However, the schedulers in the input and output port modules guarantee QoS only over the local bottleneck, namely the link between the input port module and the switch fabric, and the link between the output port module and down stream traffic manager devices respectively. The responsibility of resolving conflicts between input port modules for common resource in the cross bar fabric falls on the central cross bar scheduler. Since the central scheduler has to maintain global information, and must schedule N times as fast as the input and output schedulers, providing a multi-class centralized scheduler is not a scalable solution as the number of cross bar ports and the speed of the cross bar ports increase.